package Lee_code;

import java.util.Arrays;

/**
 * @author blh
 * @date 2024年07月02日 15:10
 */
public class Lee_152_72 {
    public int maxProduct(int[] nums) {
        int len = nums.length;
        // dp[i][0]存正值, dp[i][1]存负值
        int maxMulti = 0;
        int[][] dp = new int[len][2];
        if (nums[0] >= 0) {
            dp[0][0] = nums[0];
        } else {
            dp[0][1] = nums[0];
        }
        for (int i = 1; i < len; i++) {
            // 正数
            if (nums[i] > 0) {
                dp[i][0] = Math.max(nums[i], nums[i] * dp[i - 1][0]);
                dp[i][1] = nums[i] * dp[i - 1][1];
            } else if (nums[i] < 0) {
                dp[i][0] = nums[i] * dp[i - 1][1];
                dp[i][1] = Math.min(nums[i], nums[i] * dp[i - 1][0]);
            } else if (nums[i] == 0) {
                dp[i][0] = 0;
                dp[i][1] = 0;
            }
            maxMulti = Math.max(maxMulti, dp[i][0]);
        }

        return maxMulti;
    }
}
